package com.qf.controller;

import com.qf.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import org.springframework.web.servlet.ModelAndView;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 *
 * @Controller：控制器
 * @RequestMapping("/test")（类，方法注解）：请求映射路径
 *      可以用在方法上，也能用在类上，请求时路径应该是类上路径+方法上路径
 *      可接收get和post请求
 *      method = RequestMethod.GET 只能接收post请求，相当于注解@PostMapping
 *      method = RequestMethod.POST 只能接收post请求，相当于注解@PostMapping
 * @RequestParam:绑定参数
 *      name:指定前端的名称
 *      required:默认为true，表示必须传此参数 false 可以不传此参数
 *      defaultValue ： 默认值
 *  springMVC中默认是请求转发
 *  重定向： redirect
 *  请求转发： forword
 * 注意： 如果写了redirect，forword关键字，则视图解析器不会添加前缀和后缀
 *
 * 响应数据
 *  请求域存储数据
 *      ModelMap，Model 可以手动new， 也可以写到处理器的参数,可以再请求域存储数据
 *
 *      ModelAndView 模型和视图对象,可以手动new， 也可以写到处理器的参数,可以再请求域存储数据，也能指定视图页面
 * @author YDW
 * projectName:project2202_3
 * time:2022/5/7 10:17
 * description:
 */
@RestController
@RequestMapping("/user")
@CrossOrigin("http://localhost:8081")
public class TestController {
    /*
    * 获得所有user
    * */
    @GetMapping("")
    public List<User> queryAll(){
        List<User> list=new ArrayList<>();
        list.add(new User(1,"张三",true,'男'));
        list.add(new User(2,"李四",true,'女'));
        list.add(new User(4,"王五",true,'男'));
        return list;

    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @GetMapping("/{id}")
    public User findById(@PathVariable("id") Integer id){
        System.out.println(id);
        return new User(1,"张三",true,'男');

    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @DeleteMapping("/{id}")
    public String deleteById(@PathVariable("id") Integer id){
        System.out.println("delete"+id);
        return "success";

    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @PutMapping("")
    public String update(@RequestBody User user){
        System.out.println("put:"+user);
        return "success";

    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @PostMapping("")
    public String insert(@RequestBody User user){
        System.out.println("post:"+user);
        return "success";

    }

}
